<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRutils.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">IRremoteESP8266
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">IRutils.cpp File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceirutils"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html">irutils</a></td></tr>
<tr class="memdesc:namespaceirutils"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for covering common functions &amp; procedures for advancd protocol handlers. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a366219b6f1c46f41c6573b3e5e875e41"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a366219b6f1c46f41c6573b3e5e875e41">reverseBits</a> (uint64_t input, uint16_t nbits)</td></tr>
<tr class="memdesc:a366219b6f1c46f41c6573b3e5e875e41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reverse the order of the requested least significant nr. of bits.  <a href="IRutils_8cpp.html#a366219b6f1c46f41c6573b3e5e875e41">More...</a><br /></td></tr>
<tr class="separator:a366219b6f1c46f41c6573b3e5e875e41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f6ddef74b41ef6f8d2805fcfc396420"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a9f6ddef74b41ef6f8d2805fcfc396420">uint64ToString</a> (uint64_t input, uint8_t base)</td></tr>
<tr class="memdesc:a9f6ddef74b41ef6f8d2805fcfc396420"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values.  <a href="IRutils_8cpp.html#a9f6ddef74b41ef6f8d2805fcfc396420">More...</a><br /></td></tr>
<tr class="separator:a9f6ddef74b41ef6f8d2805fcfc396420"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1beb5c8700b91d8e5419bafd0a1ed84"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#aa1beb5c8700b91d8e5419bafd0a1ed84">int64ToString</a> (int64_t input, uint8_t base)</td></tr>
<tr class="memdesc:aa1beb5c8700b91d8e5419bafd0a1ed84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a int64_t (signed long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values.  <a href="IRutils_8cpp.html#aa1beb5c8700b91d8e5419bafd0a1ed84">More...</a><br /></td></tr>
<tr class="separator:aa1beb5c8700b91d8e5419bafd0a1ed84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2b0a4b9a1a7fca3d5f5afc14b682433"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#ad2b0a4b9a1a7fca3d5f5afc14b682433">serialPrintUint64</a> (uint64_t input, uint8_t base)</td></tr>
<tr class="memdesc:ad2b0a4b9a1a7fca3d5f5afc14b682433"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t)  <a href="IRutils_8cpp.html#ad2b0a4b9a1a7fca3d5f5afc14b682433">More...</a><br /></td></tr>
<tr class="separator:ad2b0a4b9a1a7fca3d5f5afc14b682433"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1614f315c1ebc44eaf1ac62055cc1ff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#ae1614f315c1ebc44eaf1ac62055cc1ff">strToDecodeType</a> (const char *const str)</td></tr>
<tr class="memdesc:ae1614f315c1ebc44eaf1ac62055cc1ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a C-style string to a decode_type_t.  <a href="IRutils_8cpp.html#ae1614f315c1ebc44eaf1ac62055cc1ff">More...</a><br /></td></tr>
<tr class="separator:ae1614f315c1ebc44eaf1ac62055cc1ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e98a1b929f36dfa75c2e325bf281cd1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a9e98a1b929f36dfa75c2e325bf281cd1">typeToString</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol, const bool isRepeat)</td></tr>
<tr class="memdesc:a9e98a1b929f36dfa75c2e325bf281cd1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a protocol type (enum etc) to a human readable string.  <a href="IRutils_8cpp.html#a9e98a1b929f36dfa75c2e325bf281cd1">More...</a><br /></td></tr>
<tr class="separator:a9e98a1b929f36dfa75c2e325bf281cd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6efd4986db60709d3501606ec7ab5382"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a6efd4986db60709d3501606ec7ab5382">hasACState</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol)</td></tr>
<tr class="memdesc:a6efd4986db60709d3501606ec7ab5382"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does the given protocol use a complex state as part of the decode?  <a href="IRutils_8cpp.html#a6efd4986db60709d3501606ec7ab5382">More...</a><br /></td></tr>
<tr class="separator:a6efd4986db60709d3501606ec7ab5382"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad5f25cf6a2dded8b48f4a6dd16857be"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#aad5f25cf6a2dded8b48f4a6dd16857be">getCorrectedRawLength</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:aad5f25cf6a2dded8b48f4a6dd16857be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries.  <a href="IRutils_8cpp.html#aad5f25cf6a2dded8b48f4a6dd16857be">More...</a><br /></td></tr>
<tr class="separator:aad5f25cf6a2dded8b48f4a6dd16857be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10fc00c8b399dddb67a228325e6e2f79"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a10fc00c8b399dddb67a228325e6e2f79">resultToSourceCode</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:a10fc00c8b399dddb67a228325e6e2f79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a String containing the key values of a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure in a C/C++ code style format.  <a href="IRutils_8cpp.html#a10fc00c8b399dddb67a228325e6e2f79">More...</a><br /></td></tr>
<tr class="separator:a10fc00c8b399dddb67a228325e6e2f79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbfdef125ff077431f3abc27a1eeb800"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#afbfdef125ff077431f3abc27a1eeb800">resultToTimingInfo</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:afbfdef125ff077431f3abc27a1eeb800"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure.  <a href="IRutils_8cpp.html#afbfdef125ff077431f3abc27a1eeb800">More...</a><br /></td></tr>
<tr class="separator:afbfdef125ff077431f3abc27a1eeb800"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25a669d53f231de6152f8e60cedf39f7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a25a669d53f231de6152f8e60cedf39f7">resultToHexidecimal</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const result)</td></tr>
<tr class="memdesc:a25a669d53f231de6152f8e60cedf39f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure's value/state to simple hexadecimal.  <a href="IRutils_8cpp.html#a25a669d53f231de6152f8e60cedf39f7">More...</a><br /></td></tr>
<tr class="separator:a25a669d53f231de6152f8e60cedf39f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8">resultToHumanReadableBasic</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure into a human readable format.  <a href="IRutils_8cpp.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8">More...</a><br /></td></tr>
<tr class="separator:a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"><td class="memItemLeft" align="right" valign="top">uint16_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a">resultToRawArray</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const decode)</td></tr>
<tr class="memdesc:a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> into an array suitable for <code>sendRaw()</code>.  <a href="IRutils_8cpp.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a">More...</a><br /></td></tr>
<tr class="separator:a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfbd3d7cc33d0aac341e6619f3390108"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#abfbd3d7cc33d0aac341e6619f3390108">sumBytes</a> (const uint8_t *const start, const uint16_t length, const uint8_t init)</td></tr>
<tr class="memdesc:abfbd3d7cc33d0aac341e6619f3390108"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sum all the bytes of an array and return the least significant 8-bits of the result.  <a href="IRutils_8cpp.html#abfbd3d7cc33d0aac341e6619f3390108">More...</a><br /></td></tr>
<tr class="separator:abfbd3d7cc33d0aac341e6619f3390108"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa2a3fb714375e61051a0b24623b9cc9"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#aaa2a3fb714375e61051a0b24623b9cc9">xorBytes</a> (const uint8_t *const start, const uint16_t length, const uint8_t init)</td></tr>
<tr class="memdesc:aaa2a3fb714375e61051a0b24623b9cc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate a rolling XOR of all the bytes of an array.  <a href="IRutils_8cpp.html#aaa2a3fb714375e61051a0b24623b9cc9">More...</a><br /></td></tr>
<tr class="separator:aaa2a3fb714375e61051a0b24623b9cc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84621a9f7fb2d57bd425f9f0d662cf7d"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a84621a9f7fb2d57bd425f9f0d662cf7d">countBits</a> (const uint8_t *const start, const uint16_t length, const bool ones, const uint16_t init)</td></tr>
<tr class="memdesc:a84621a9f7fb2d57bd425f9f0d662cf7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Count the number of bits of a certain type in an array.  <a href="IRutils_8cpp.html#a84621a9f7fb2d57bd425f9f0d662cf7d">More...</a><br /></td></tr>
<tr class="separator:a84621a9f7fb2d57bd425f9f0d662cf7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae8042367bb94df81672603270fa7342"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#aae8042367bb94df81672603270fa7342">countBits</a> (const uint64_t data, const uint8_t length, const bool ones, const uint16_t init)</td></tr>
<tr class="memdesc:aae8042367bb94df81672603270fa7342"><td class="mdescLeft">&#160;</td><td class="mdescRight">Count the number of bits of a certain type in an Integer.  <a href="IRutils_8cpp.html#aae8042367bb94df81672603270fa7342">More...</a><br /></td></tr>
<tr class="separator:aae8042367bb94df81672603270fa7342"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a85904f25c8ec77fb554d238c59cfdb"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a1a85904f25c8ec77fb554d238c59cfdb">invertBits</a> (const uint64_t data, const uint16_t nbits)</td></tr>
<tr class="memdesc:a1a85904f25c8ec77fb554d238c59cfdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invert/Flip the bits in an Integer.  <a href="IRutils_8cpp.html#a1a85904f25c8ec77fb554d238c59cfdb">More...</a><br /></td></tr>
<tr class="separator:a1a85904f25c8ec77fb554d238c59cfdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19b940e26a4f8ddcaf86cce1ec62d563"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a19b940e26a4f8ddcaf86cce1ec62d563">celsiusToFahrenheit</a> (const float deg)</td></tr>
<tr class="memdesc:a19b940e26a4f8ddcaf86cce1ec62d563"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert degrees Celsius to degrees Fahrenheit.  <a href="IRutils_8cpp.html#a19b940e26a4f8ddcaf86cce1ec62d563">More...</a><br /></td></tr>
<tr class="separator:a19b940e26a4f8ddcaf86cce1ec62d563"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83538e86145850c24b1c824723089502"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a83538e86145850c24b1c824723089502">fahrenheitToCelsius</a> (const float deg)</td></tr>
<tr class="memdesc:a83538e86145850c24b1c824723089502"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert degrees Fahrenheit to degrees Celsius.  <a href="IRutils_8cpp.html#a83538e86145850c24b1c824723089502">More...</a><br /></td></tr>
<tr class="separator:a83538e86145850c24b1c824723089502"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac98793392d1e65c1b8d6895eb9d9b75b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b">irutils::addLabeledString</a> (const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> value, const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label, const bool precomma)</td></tr>
<tr class="memdesc:ac98793392d1e65c1b8d6895eb9d9b75b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String with a colon separated "label: value" pair suitable for Humans.  <a href="namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b">More...</a><br /></td></tr>
<tr class="separator:ac98793392d1e65c1b8d6895eb9d9b75b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12ba9cf1830a886649a80c3cc5fdce2b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b">irutils::addBoolToString</a> (const bool value, const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label, const bool precomma)</td></tr>
<tr class="memdesc:a12ba9cf1830a886649a80c3cc5fdce2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String with a colon separated flag suitable for Humans. e.g. "Power: On".  <a href="namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b">More...</a><br /></td></tr>
<tr class="separator:a12ba9cf1830a886649a80c3cc5fdce2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68dee7bc57c52919bc77df0c886a8b71"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a68dee7bc57c52919bc77df0c886a8b71">irutils::addToggleToString</a> (const bool toggle, const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label, const bool precomma)</td></tr>
<tr class="memdesc:a68dee7bc57c52919bc77df0c886a8b71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String with a colon separated toggle flag suitable for Humans. e.g. "Light: Toggle", "Light: -".  <a href="namespaceirutils.html#a68dee7bc57c52919bc77df0c886a8b71">More...</a><br /></td></tr>
<tr class="separator:a68dee7bc57c52919bc77df0c886a8b71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a772e623c4b60208200e02afbaec66651"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a772e623c4b60208200e02afbaec66651">irutils::addIntToString</a> (const uint16_t value, const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label, const bool precomma)</td></tr>
<tr class="memdesc:a772e623c4b60208200e02afbaec66651"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23".  <a href="namespaceirutils.html#a772e623c4b60208200e02afbaec66651">More...</a><br /></td></tr>
<tr class="separator:a772e623c4b60208200e02afbaec66651"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8032ad49c2af274b7c9bc2ecd7d6bce"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ad8032ad49c2af274b7c9bc2ecd7d6bce">irutils::addSignedIntToString</a> (const int16_t value, const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label, const bool precomma)</td></tr>
<tr class="memdesc:ad8032ad49c2af274b7c9bc2ecd7d6bce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23".  <a href="namespaceirutils.html#ad8032ad49c2af274b7c9bc2ecd7d6bce">More...</a><br /></td></tr>
<tr class="separator:ad8032ad49c2af274b7c9bc2ecd7d6bce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae89b70ce66617a8707c1951eadbc6fbd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd">irutils::modelToStr</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol, const int16_t model)</td></tr>
<tr class="memdesc:ae89b70ce66617a8707c1951eadbc6fbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate the model string for a given Protocol/Model pair.  <a href="namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd">More...</a><br /></td></tr>
<tr class="separator:ae89b70ce66617a8707c1951eadbc6fbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06e5a5c2b6f6649035dfa5eb19801367"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367">irutils::addModelToString</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol, const int16_t model, const bool precomma)</td></tr>
<tr class="memdesc:a06e5a5c2b6f6649035dfa5eb19801367"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for a given protocol model number. e.g. "Model: JKE".  <a href="namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367">More...</a><br /></td></tr>
<tr class="separator:a06e5a5c2b6f6649035dfa5eb19801367"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cef0634f4db979a93b7dc19cc2b4a85"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85">irutils::addTempToString</a> (const uint16_t degrees, const bool celsius, const bool precomma)</td></tr>
<tr class="memdesc:a0cef0634f4db979a93b7dc19cc2b4a85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for a given temperature. e.g. "Temp: 25C".  <a href="namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85">More...</a><br /></td></tr>
<tr class="separator:a0cef0634f4db979a93b7dc19cc2b4a85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a47e2b142c7738958e367b0c80a79e7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a3a47e2b142c7738958e367b0c80a79e7">irutils::addTempFloatToString</a> (const float degrees, const bool celsius, const bool precomma)</td></tr>
<tr class="memdesc:a3a47e2b142c7738958e367b0c80a79e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for a given temperature. e.g. "Temp: 25.5C".  <a href="namespaceirutils.html#a3a47e2b142c7738958e367b0c80a79e7">More...</a><br /></td></tr>
<tr class="separator:a3a47e2b142c7738958e367b0c80a79e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b74ae0258e98aa0eaebc6f3efe1481e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e">irutils::addModeToString</a> (const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan)</td></tr>
<tr class="memdesc:a8b74ae0258e98aa0eaebc6f3efe1481e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)".  <a href="namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e">More...</a><br /></td></tr>
<tr class="separator:a8b74ae0258e98aa0eaebc6f3efe1481e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ead1d10578c64627f8a24b5d8a7444f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f">irutils::addDayToString</a> (const uint8_t day_of_week, const int8_t offset, const bool precomma)</td></tr>
<tr class="memdesc:a6ead1d10578c64627f8a24b5d8a7444f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of the 3-letter day of the week from a numerical day of the week. e.g. "Day: 1 (Mon)".  <a href="namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f">More...</a><br /></td></tr>
<tr class="separator:a6ead1d10578c64627f8a24b5d8a7444f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af222d5a977e2cd2c979184c449d3c2f8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#af222d5a977e2cd2c979184c449d3c2f8">irutils::addFanToString</a> (const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium, const uint8_t maximum)</td></tr>
<tr class="memdesc:af222d5a977e2cd2c979184c449d3c2f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)".  <a href="namespaceirutils.html#af222d5a977e2cd2c979184c449d3c2f8">More...</a><br /></td></tr>
<tr class="separator:af222d5a977e2cd2c979184c449d3c2f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9eeea9379788b856d148ca5bc7eaf7a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ae9eeea9379788b856d148ca5bc7eaf7a">irutils::addSwingHToString</a> (const uint8_t position, const uint8_t automatic, const uint8_t maxleft, const uint8_t left, const uint8_t middle, const uint8_t right, const uint8_t maxright, const uint8_t off, const uint8_t leftright, const uint8_t rightleft, const uint8_t threed, const uint8_t wide)</td></tr>
<tr class="memdesc:ae9eeea9379788b856d148ca5bc7eaf7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for the given horizontal swing setting. e.g. "Swing(H): 0 (Auto)".  <a href="namespaceirutils.html#ae9eeea9379788b856d148ca5bc7eaf7a">More...</a><br /></td></tr>
<tr class="separator:ae9eeea9379788b856d148ca5bc7eaf7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4921dc8d85aa1cc3e89aaa64c24abd58"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a4921dc8d85aa1cc3e89aaa64c24abd58">irutils::addSwingVToString</a> (const uint8_t position, const uint8_t automatic, const uint8_t highest, const uint8_t high, const uint8_t uppermiddle, const uint8_t middle, const uint8_t lowermiddle, const uint8_t low, const uint8_t lowest, const uint8_t off, const uint8_t swing, const uint8_t breeze, const uint8_t circulate)</td></tr>
<tr class="memdesc:a4921dc8d85aa1cc3e89aaa64c24abd58"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for the given vertical swing setting. e.g. "Swing(V): 0 (Auto)".  <a href="namespaceirutils.html#a4921dc8d85aa1cc3e89aaa64c24abd58">More...</a><br /></td></tr>
<tr class="separator:a4921dc8d85aa1cc3e89aaa64c24abd58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e55c6fdcc82e1ef8bd5f73df83609a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7">irutils::htmlEscape</a> (const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> unescaped)</td></tr>
<tr class="memdesc:a6e55c6fdcc82e1ef8bd5f73df83609a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS.  <a href="namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7">More...</a><br /></td></tr>
<tr class="separator:a6e55c6fdcc82e1ef8bd5f73df83609a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c59c8dd886c283fdb8adc9082c6890a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a">irutils::msToString</a> (uint32_t const msecs)</td></tr>
<tr class="memdesc:a9c59c8dd886c283fdb8adc9082c6890a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds".  <a href="namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a">More...</a><br /></td></tr>
<tr class="separator:a9c59c8dd886c283fdb8adc9082c6890a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebab40a2c69624adc1a5a8a6db72952f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f">irutils::minsToString</a> (const uint16_t mins)</td></tr>
<tr class="memdesc:aebab40a2c69624adc1a5a8a6db72952f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59".  <a href="namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f">More...</a><br /></td></tr>
<tr class="separator:aebab40a2c69624adc1a5a8a6db72952f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4752ecc3eafa3ca2e13344a52519b343"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343">irutils::sumNibbles</a> (const uint8_t *const start, const uint16_t length, const uint8_t init)</td></tr>
<tr class="memdesc:a4752ecc3eafa3ca2e13344a52519b343"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sum all the nibbles together in a series of bytes.  <a href="namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343">More...</a><br /></td></tr>
<tr class="separator:a4752ecc3eafa3ca2e13344a52519b343"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb5202fa0093ee6b7e07d4290229fbd2"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#aeb5202fa0093ee6b7e07d4290229fbd2">irutils::sumNibbles</a> (const uint64_t data, const uint8_t count, const uint8_t init, const bool nibbleonly)</td></tr>
<tr class="memdesc:aeb5202fa0093ee6b7e07d4290229fbd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sum all the nibbles together in an integer.  <a href="namespaceirutils.html#aeb5202fa0093ee6b7e07d4290229fbd2">More...</a><br /></td></tr>
<tr class="separator:aeb5202fa0093ee6b7e07d4290229fbd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af18c4abfd0ed9f4b3a099ecec1999ee7"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7">irutils::bcdToUint8</a> (const uint8_t bcd)</td></tr>
<tr class="memdesc:af18c4abfd0ed9f4b3a099ecec1999ee7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a byte of Binary Coded Decimal(BCD) into an Integer.  <a href="namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7">More...</a><br /></td></tr>
<tr class="separator:af18c4abfd0ed9f4b3a099ecec1999ee7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a534704a52b75acd46f687cc0a2b91bf1"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1">irutils::uint8ToBcd</a> (const uint8_t integer)</td></tr>
<tr class="memdesc:a534704a52b75acd46f687cc0a2b91bf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an Integer into a byte of Binary Coded Decimal(BCD).  <a href="namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1">More...</a><br /></td></tr>
<tr class="separator:a534704a52b75acd46f687cc0a2b91bf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0756774b20e4f7c836abee466800ee6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6">irutils::getBit</a> (const uint64_t data, const uint8_t position, const uint8_t size)</td></tr>
<tr class="memdesc:ac0756774b20e4f7c836abee466800ee6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of <code>position</code>th bit of an Integer.  <a href="namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6">More...</a><br /></td></tr>
<tr class="separator:ac0756774b20e4f7c836abee466800ee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27f90f74ed0b7af37c7bd8cd2a059dee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a27f90f74ed0b7af37c7bd8cd2a059dee">irutils::getBit</a> (const uint8_t data, const uint8_t position)</td></tr>
<tr class="memdesc:a27f90f74ed0b7af37c7bd8cd2a059dee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of <code>position</code>th bit of an Integer.  <a href="namespaceirutils.html#a27f90f74ed0b7af37c7bd8cd2a059dee">More...</a><br /></td></tr>
<tr class="separator:a27f90f74ed0b7af37c7bd8cd2a059dee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a316301577d2ff338bfba6605df2cc46b"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b">irutils::setBit</a> (const uint64_t data, const uint8_t position, const bool on, const uint8_t size)</td></tr>
<tr class="memdesc:a316301577d2ff338bfba6605df2cc46b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of an Integer with the <code>position</code>th bit changed.  <a href="namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b">More...</a><br /></td></tr>
<tr class="separator:a316301577d2ff338bfba6605df2cc46b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e9e858b490fa3328b4c5bd01adedb8c"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a2e9e858b490fa3328b4c5bd01adedb8c">irutils::setBit</a> (const uint8_t data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:a2e9e858b490fa3328b4c5bd01adedb8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of an Integer with the <code>position</code>th bit changed.  <a href="namespaceirutils.html#a2e9e858b490fa3328b4c5bd01adedb8c">More...</a><br /></td></tr>
<tr class="separator:a2e9e858b490fa3328b4c5bd01adedb8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1b3de6e733d9c4d614a8239f5bd3220"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ac1b3de6e733d9c4d614a8239f5bd3220">irutils::setBit</a> (uint8_t *const data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:ac1b3de6e733d9c4d614a8239f5bd3220"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter the value of an Integer with the <code>position</code>th bit changed.  <a href="namespaceirutils.html#ac1b3de6e733d9c4d614a8239f5bd3220">More...</a><br /></td></tr>
<tr class="separator:ac1b3de6e733d9c4d614a8239f5bd3220"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86bbcf05c1601712b1d587b87035f09b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a86bbcf05c1601712b1d587b87035f09b">irutils::setBit</a> (uint32_t *const data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:a86bbcf05c1601712b1d587b87035f09b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter the value of an Integer with the <code>position</code>th bit changed.  <a href="namespaceirutils.html#a86bbcf05c1601712b1d587b87035f09b">More...</a><br /></td></tr>
<tr class="separator:a86bbcf05c1601712b1d587b87035f09b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e7814e2274f02df0dac0106c293c487"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a9e7814e2274f02df0dac0106c293c487">irutils::setBit</a> (uint64_t *const data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:a9e7814e2274f02df0dac0106c293c487"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter the value of an Integer with the <code>position</code>th bit changed.  <a href="namespaceirutils.html#a9e7814e2274f02df0dac0106c293c487">More...</a><br /></td></tr>
<tr class="separator:a9e7814e2274f02df0dac0106c293c487"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4f5e3eb26e111909ddc93a8b018ba78"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78">irutils::setBits</a> (uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)</td></tr>
<tr class="memdesc:ab4f5e3eb26e111909ddc93a8b018ba78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter an uint8_t value by overwriting an arbitrary given number of bits.  <a href="namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78">More...</a><br /></td></tr>
<tr class="separator:ab4f5e3eb26e111909ddc93a8b018ba78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fd8b18a76f0ae8f730b4de55fc9486e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a3fd8b18a76f0ae8f730b4de55fc9486e">irutils::setBits</a> (uint32_t *const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data)</td></tr>
<tr class="memdesc:a3fd8b18a76f0ae8f730b4de55fc9486e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter an uint32_t value by overwriting an arbitrary given number of bits.  <a href="namespaceirutils.html#a3fd8b18a76f0ae8f730b4de55fc9486e">More...</a><br /></td></tr>
<tr class="separator:a3fd8b18a76f0ae8f730b4de55fc9486e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4dfb0984a9ea38602805987a7845839c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a4dfb0984a9ea38602805987a7845839c">irutils::setBits</a> (uint64_t *const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data)</td></tr>
<tr class="memdesc:a4dfb0984a9ea38602805987a7845839c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter an uint64_t value by overwriting an arbitrary given number of bits.  <a href="namespaceirutils.html#a4dfb0984a9ea38602805987a7845839c">More...</a><br /></td></tr>
<tr class="separator:a4dfb0984a9ea38602805987a7845839c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad818a474349546c84824451a5468f4fe"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ad818a474349546c84824451a5468f4fe">irutils::invertBytePairs</a> (uint8_t *ptr, const uint16_t length)</td></tr>
<tr class="memdesc:ad818a474349546c84824451a5468f4fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create byte pairs where the second byte of the pair is a bit inverted/flipped copy of the first/previous byte of the pair.  <a href="namespaceirutils.html#ad818a474349546c84824451a5468f4fe">More...</a><br /></td></tr>
<tr class="separator:ad818a474349546c84824451a5468f4fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab27a18cec663509b4d0df094575c2f64"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ab27a18cec663509b4d0df094575c2f64">irutils::checkInvertedBytePairs</a> (const uint8_t *const ptr, const uint16_t length)</td></tr>
<tr class="memdesc:ab27a18cec663509b4d0df094575c2f64"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check an array to see if every second byte of a pair is a bit inverted/flipped copy of the first/previous byte of the pair.  <a href="namespaceirutils.html#ab27a18cec663509b4d0df094575c2f64">More...</a><br /></td></tr>
<tr class="separator:ab27a18cec663509b4d0df094575c2f64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af67b75834051c4aced358b274c1c55a8"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#af67b75834051c4aced358b274c1c55a8">irutils::lowLevelSanityCheck</a> (void)</td></tr>
<tr class="memdesc:af67b75834051c4aced358b274c1c55a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform a low level bit manipulation sanity check for the given cpu architecture and the compiler operation. Calls to this should return 0 if everything is as expected, anything else means the library won't work as expected.  <a href="namespaceirutils.html#af67b75834051c4aced358b274c1c55a8">More...</a><br /></td></tr>
<tr class="separator:af67b75834051c4aced358b274c1c55a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a19b940e26a4f8ddcaf86cce1ec62d563"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19b940e26a4f8ddcaf86cce1ec62d563">&#9670;&nbsp;</a></span>celsiusToFahrenheit()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float celsiusToFahrenheit </td>
          <td>(</td>
          <td class="paramtype">const float&#160;</td>
          <td class="paramname"><em>deg</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Convert degrees Celsius to degrees Fahrenheit. </p>

</div>
</div>
<a id="aae8042367bb94df81672603270fa7342"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae8042367bb94df81672603270fa7342">&#9670;&nbsp;</a></span>countBits() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t countBits </td>
          <td>(</td>
          <td class="paramtype">const uint64_t&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>ones</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint16_t&#160;</td>
          <td class="paramname"><em>init</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Count the number of bits of a certain type in an Integer. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The value you want bits counted for. Starting from the LSB. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bits to use in the calculation? Starts at the LSB </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ones</td><td>Count the binary nr of <code>1</code> bits. False is count the <code>0</code>s. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The nr. of bits found of the given type found in the Integer. </dd></dl>

</div>
</div>
<a id="a84621a9f7fb2d57bd425f9f0d662cf7d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84621a9f7fb2d57bd425f9f0d662cf7d">&#9670;&nbsp;</a></span>countBits() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t countBits </td>
          <td>(</td>
          <td class="paramtype">const uint8_t *const&#160;</td>
          <td class="paramname"><em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint16_t&#160;</td>
          <td class="paramname"><em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>ones</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint16_t&#160;</td>
          <td class="paramname"><em>init</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Count the number of bits of a certain type in an array. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>A ptr to the start of the byte array to calculate over. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bytes to use in the calculation. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ones</td><td>Count the binary nr of <code>1</code> bits. False is count the <code>0</code>s. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The nr. of bits found of the given type found in the array. </dd></dl>

</div>
</div>
<a id="a83538e86145850c24b1c824723089502"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83538e86145850c24b1c824723089502">&#9670;&nbsp;</a></span>fahrenheitToCelsius()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float fahrenheitToCelsius </td>
          <td>(</td>
          <td class="paramtype">const float&#160;</td>
          <td class="paramname"><em>deg</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Convert degrees Fahrenheit to degrees Celsius. </p>

</div>
</div>
<a id="aad5f25cf6a2dded8b48f4a6dd16857be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad5f25cf6a2dded8b48f4a6dd16857be">&#9670;&nbsp;</a></span>getCorrectedRawLength()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t getCorrectedRawLength </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
          <td class="paramname"><em>results</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The corrected length. </dd></dl>

</div>
</div>
<a id="a6efd4986db60709d3501606ec7ab5382"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6efd4986db60709d3501606ec7ab5382">&#9670;&nbsp;</a></span>hasACState()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool hasACState </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a>&#160;</td>
          <td class="paramname"><em>protocol</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Does the given protocol use a complex state as part of the decode? </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">protocol</td><td>The decode_type_t protocol we are enquiring about. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the protocol uses a state array. False if just an integer. </dd></dl>

</div>
</div>
<a id="aa1beb5c8700b91d8e5419bafd0a1ed84"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa1beb5c8700b91d8e5419bafd0a1ed84">&#9670;&nbsp;</a></span>int64ToString()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> int64ToString </td>
          <td>(</td>
          <td class="paramtype">int64_t&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>base</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Convert a int64_t (signed long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>The value to print </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>The output base. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String representation of the integer. </dd></dl>
<blockquote class="doxtable">
<dl class="section see"><dt>See also</dt><dd><a href="https://github.com/crankyoldgit/IRremoteESP8266/issues/1639#issuecomment-944906016">https://github.com/crankyoldgit/IRremoteESP8266/issues/1639#issuecomment-944906016</a> </dd></dl>
</blockquote>

</div>
</div>
<a id="a1a85904f25c8ec77fb554d238c59cfdb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a85904f25c8ec77fb554d238c59cfdb">&#9670;&nbsp;</a></span>invertBits()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint64_t invertBits </td>
          <td>(</td>
          <td class="paramtype">const uint64_t&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint16_t&#160;</td>
          <td class="paramname"><em>nbits</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Invert/Flip the bits in an Integer. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The Integer that will be inverted. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nbits</td><td>How many bits are to be inverted. Starting from the LSB. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An Integer with the appropriate bits inverted/flipped. </dd></dl>

</div>
</div>
<a id="a25a669d53f231de6152f8e60cedf39f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a25a669d53f231de6152f8e60cedf39f7">&#9670;&nbsp;</a></span>resultToHexidecimal()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToHexidecimal </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
          <td class="paramname"><em>result</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Convert the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure's value/state to simple hexadecimal. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">result</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the output. </dd></dl>

</div>
</div>
<a id="a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8">&#9670;&nbsp;</a></span>resultToHumanReadableBasic()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToHumanReadableBasic </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
          <td class="paramname"><em>results</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure into a human readable format. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the output. </dd></dl>

</div>
</div>
<a id="a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a">&#9670;&nbsp;</a></span>resultToRawArray()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t* resultToRawArray </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
          <td class="paramname"><em>decode</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Convert a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> into an array suitable for <code>sendRaw()</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">decode</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure that contains a mesg. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A PTR to a dynamically allocated uint16_t sendRaw compatible array. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>The returned array needs to be delete[]'ed/free()'ed (deallocated) after use by caller. </dd></dl>

</div>
</div>
<a id="a10fc00c8b399dddb67a228325e6e2f79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10fc00c8b399dddb67a228325e6e2f79">&#9670;&nbsp;</a></span>resultToSourceCode()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToSourceCode </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
          <td class="paramname"><em>results</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return a String containing the key values of a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure in a C/C++ code style format. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the code-ified result. </dd></dl>

</div>
</div>
<a id="afbfdef125ff077431f3abc27a1eeb800"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbfdef125ff077431f3abc27a1eeb800">&#9670;&nbsp;</a></span>resultToTimingInfo()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToTimingInfo </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
          <td class="paramname"><em>results</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the legacy information format. </dd></dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000003">Deprecated:</a></b></dt><dd>This is only for those that want this legacy format. </dd></dl>

</div>
</div>
<a id="a366219b6f1c46f41c6573b3e5e875e41"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a366219b6f1c46f41c6573b3e5e875e41">&#9670;&nbsp;</a></span>reverseBits()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint64_t reverseBits </td>
          <td>(</td>
          <td class="paramtype">uint64_t&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&#160;</td>
          <td class="paramname"><em>nbits</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reverse the order of the requested least significant nr. of bits. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>Bit pattern/integer to reverse. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nbits</td><td>Nr. of bits to reverse. (LSB -&gt; MSB) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The reversed bit pattern. </dd></dl>

</div>
</div>
<a id="ad2b0a4b9a1a7fca3d5f5afc14b682433"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2b0a4b9a1a7fca3d5f5afc14b682433">&#9670;&nbsp;</a></span>serialPrintUint64()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void serialPrintUint64 </td>
          <td>(</td>
          <td class="paramtype">uint64_t&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>base</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t) </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>The value to print </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>The output base. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ae1614f315c1ebc44eaf1ac62055cc1ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1614f315c1ebc44eaf1ac62055cc1ff">&#9670;&nbsp;</a></span>strToDecodeType()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> strToDecodeType </td>
          <td>(</td>
          <td class="paramtype">const char *const&#160;</td>
          <td class="paramname"><em>str</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Convert a C-style string to a decode_type_t. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">str</td><td>A C-style string containing a protocol name or number. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A decode_type_t enum. (decode_type_t::UNKNOWN if no match.) </dd></dl>

</div>
</div>
<a id="abfbd3d7cc33d0aac341e6619f3390108"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abfbd3d7cc33d0aac341e6619f3390108">&#9670;&nbsp;</a></span>sumBytes()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint8_t sumBytes </td>
          <td>(</td>
          <td class="paramtype">const uint8_t *const&#160;</td>
          <td class="paramname"><em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint16_t&#160;</td>
          <td class="paramname"><em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>init</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sum all the bytes of an array and return the least significant 8-bits of the result. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>A ptr to the start of the byte array to calculate over. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bytes to use in the calculation. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The 8-bit calculated result of all the bytes and init value. </dd></dl>

</div>
</div>
<a id="a9e98a1b929f36dfa75c2e325bf281cd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e98a1b929f36dfa75c2e325bf281cd1">&#9670;&nbsp;</a></span>typeToString()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> typeToString </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a>&#160;</td>
          <td class="paramname"><em>protocol</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>isRepeat</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Convert a protocol type (enum etc) to a human readable string. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">protocol</td><td>Nr. (enum) of the protocol. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">isRepeat</td><td>A flag indicating if it is a repeat message. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the protocol name. kUnknownStr if no match. </dd></dl>

</div>
</div>
<a id="a9f6ddef74b41ef6f8d2805fcfc396420"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f6ddef74b41ef6f8d2805fcfc396420">&#9670;&nbsp;</a></span>uint64ToString()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> uint64ToString </td>
          <td>(</td>
          <td class="paramtype">uint64_t&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>base</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>The value to print </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>The output base. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String representation of the integer. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>Based on Arduino's Print::printNumber() </dd></dl>

</div>
</div>
<a id="aaa2a3fb714375e61051a0b24623b9cc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa2a3fb714375e61051a0b24623b9cc9">&#9670;&nbsp;</a></span>xorBytes()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint8_t xorBytes </td>
          <td>(</td>
          <td class="paramtype">const uint8_t *const&#160;</td>
          <td class="paramname"><em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint16_t&#160;</td>
          <td class="paramname"><em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>init</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Calculate a rolling XOR of all the bytes of an array. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>A ptr to the start of the byte array to calculate over. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bytes to use in the calculation. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The 8-bit calculated result of all the bytes and init value. </dd></dl>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>
